package com.shell.scheduler.job.controller;

import com.shell.bee.base.annotation.Logging;
import com.shell.bee.entity.mvc.RetMsg;
import com.shell.bee.mvc.controller.BaseController;
import com.shell.bee.persistence.model.PageLimit;
import com.shell.scheduler.job.po.SchdJob;
import com.shell.scheduler.job.service.ScheJobService;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class ScheJobController extends BaseController {
	@Autowired
	ScheJobService scheJobService;

	@RequestMapping
	@ResponseBody
	@Logging(module = "��������", methods = "������������")
	public RetMsg add(SchdJob scheJob) {
		if (this.scheJobService.add(scheJob)) {
			return new RetMsg("success", "����������������");
		}
		return new RetMsg("error", "����������������");
	}

	@RequestMapping
	@ResponseBody
	@Logging(module = "��������", methods = "������������")
	public RetMsg update(SchdJob scheJob) {
		if (this.scheJobService.update(scheJob)) {
			return new RetMsg("success", "����������������");
		}
		return new RetMsg("error", "����������������");
	}

	@RequestMapping
	@ResponseBody
	@Logging(module = "��������", methods = "������������")
	public RetMsg trigger(String jobCode, String traceId, String workDate) {
		try {
			this.scheJobService.trigger(jobCode, traceId, workDate);
		} catch (Exception e) {
			e.printStackTrace();
			return new RetMsg("error", "������������������" + e.getMessage());
		}
		return new RetMsg("success", false, "����������������");
	}

	@RequestMapping
	@ResponseBody
	@Logging(module = "��������", methods = "������������")
	public RetMsg pause(String jobCode) {
		try {
			this.scheJobService.pause(jobCode);
		} catch (Exception e) {
			e.printStackTrace();
			return new RetMsg("error", "������������������" + e.getMessage());
		}
		return new RetMsg("success", false, "����������������");
	}

	@RequestMapping
	@ResponseBody
	@Logging(module = "��������", methods = "������������")
	public RetMsg resume(String jobCode) {
		try {
			this.scheJobService.resume(jobCode);
		} catch (Exception e) {
			e.printStackTrace();
			return new RetMsg("error", "������������������" + e.getMessage());
		}
		return new RetMsg("success", false, "����������������");
	}

	@RequestMapping
	@ResponseBody
	@Logging(module = "��������", methods = "������������")
	public RetMsg delete(String jobCode) {
		SchdJob scheJob = (SchdJob) this.scheJobService.selectByKey(jobCode);
		if (this.scheJobService.delete(scheJob)) {
			return new RetMsg("success", "������������");
		}
		return new RetMsg("warning", "��������������������������������������");
	}

	@RequestMapping
	@ResponseBody
	@Logging(module = "��������", methods = "������������")
	public List<SchdJob> findJobs(PageLimit limit, SchdJob scheJob) {
		return this.scheJobService.selectAllJobs(limit, scheJob);
	}

	@RequestMapping
	@ResponseBody
	@Logging(module = "��������", methods = "����������������")
	public boolean checkJobCode(String jobCode) {
		return this.scheJobService.checkJobCode(jobCode);
	}

	@RequestMapping
	@ResponseBody
	@Logging(module = "��������", methods = "����������������")
	public SchdJob getScheByCode(String jobCode) {
		return (SchdJob) this.scheJobService.selectByKey(jobCode);
	}
}
